package command

import (
	"flag"
	"fmt"
	"go-LineScriptCommand/manager"
)

type ScriptCmd struct {
	doc      string //接收输入变量
	priority int    //优先级
}

func init() {
	RegisterCommand(&ScriptCmd{
		priority: 1,
	})
}

// 绑定
func (m *ScriptCmd) Bind() {
	flag.StringVar(&m.doc, m.GetName(), "", m.GetDesc())
}

// 满足条件才执行命令
func (m *ScriptCmd) Condition() bool {
	CheckTime()
	return m.doc != ""
}

// 执行命令
// 1. -cmd "1+1|$$+2"  结果是4
func (m *ScriptCmd) Execute() {
	CheckTime()
	CoreExecutePrint(m.doc)
}

// 获取命令名称
func (m *ScriptCmd) GetName() string {
	return "cmd"
}

// 获取命令描述
func (m *ScriptCmd) GetDesc() string {
	return "执行脚本命令 -cmd \"1+1|incr\"  结果是3"
}

// 优先级  ,0最低...
func (m *ScriptCmd) GetPriority() int {
	return m.priority
}

// 是否终止
func (m *ScriptCmd) IsExit() bool {
	return true
}

func CoreExecutePrint(str string) {
	execute := manager.CoreExecute(str)
	fmt.Println(execute) //输出结果到控制台
}
